function menusAdmin(siteUrl) {
    // Url du site.
    this._siteUrl = siteUrl;

    // Message de confirmation.
    this._msgConfirm = '';

    // Titre d'une confirmation.
    this._titleConfirm = '';

    // Url d'appel JSON.
    this._jsonUrl = '';

    // Bind des clique.
    this.bind = function() {
        var admin = this;

        // A chaque requete Ajax, on masque les actions interdites.
        $(document).ajaxComplete(function() {
            $('a.disable').each(function() {
                if ('disable' === $(this).attr('href'))
                    $(this).css('display', 'none');
            });

            // Si on clique sur monter un lien.
            $('a.linkUp').click(function() {
                var id = $(this).attr('href');
                admin.linkUp(id);
                return false;
            });

            // Si on clique sur descendre un lien.
            $('a.linkDown').click(function() {
                var id = $(this).attr('href');
                admin.linkDown(id);
                return false;
            });

            // Si on clique sur monter un menu.
            $('a.menuUp').click(function() {
                var id = $(this).attr('href');
                admin.menuUp(id);
                return false;
            });

            // Si on clique sur descendre un menu.
            $('a.menuDown').click(function() {
                var id = $(this).attr('href');
                admin.menuDown(id);
                return false;
            });

        });
    };

    // Confirnation du UP du menu.
    this.linkUp = function(id) {
        this._msgConfirm = 'Etes vous sur de vouloir monter le lien ?';
        this._titleConfirm = 'Monter le lien ?';
        this._titleSuccess = 'Lien monté';
        this._titleError = 'Erreur lors du déplacement';
        this._jsonUrl = this._siteUrl + 'menus/linkUp/' + id;

        this._popupConfirmDisplay();
    };

    // Confirmation du DOWN du menu.
    this.linkDown = function(id) {
        this._msgConfirm = 'Etes vous sur de vouloir descendre le lien ?';
        this._titleConfirm = 'Descendre le lien ?';
        this._titleSuccess = 'Lien descendu';
        this._titleError = 'Erreur lors du déplacement';
        this._jsonUrl = this._siteUrl + 'menus/linkDown/' + id;

        this._popupConfirmDisplay();
    };

    // Confirnation du UP du menu.
    this.menuUp = function(id) {
        this._msgConfirm = 'Etes vous sur de vouloir monter le menu ?';
        this._titleConfirm = 'Monter le menu ?';
        this._titleSuccess = 'Menu monté';
        this._titleError = 'Erreur lors du déplacement';
        this._jsonUrl = this._siteUrl + 'menus/menuUp/' + id;

        this._popupConfirmDisplay();
    };

    // Confirmation du DOWN du menu.
    this.menuDown = function(id) {
        this._msgConfirm = 'Etes vous sur de vouloir descendre le menu ?';
        this._titleConfirm = 'Descendre le menu ?';
        this._titleSuccess = 'Menu descendu';
        this._titleError = 'Erreur lors du déplacement';
        this._jsonUrl = this._siteUrl + 'menus/menuDown/' + id;

        this._popupConfirmDisplay();
    };

    // Affichage de la popup de confirmation.
    this._popupConfirmDisplay = function() {
        var admin = this;

        // Supprime toute les popups
        $('#dialog:ui-dialog').dialog('destroy');

        // Modification de la popup de confirmation.
        $('div#dialog-confirm p').html(admin._msgConfirm);
        $('div#dialog-confirm').attr('title', admin._titleConfirm);

        // Création de la popup.
        $('div#dialog-confirm').dialog({
            resizable: false,
            modal: true,
            buttons: {
                'OUI': function() {
                    // Affichage de l'image de chargment.
                    $('div#dialog-confirm').append('<center><img src="' + admin._siteUrl + 'assets/images/loader.gif" /></center>');
                    $.getJSON(admin._jsonUrl, function(datas) {
                        var classResult = '';
                        var title = '';
                        var message = '';

                        // En cas de réussite.
                        if ('success' === datas.result) {
                            title = admin._titleSuccess;
                            classResult = 'success';
                        }

                        // En cas d'échec.
                        else {
                            title = admin._titleError;
                            classResult = 'error';
                        }

                        message = '<p class="' + classResult + '">' + datas.message + '</p>';

                        // Génération de la popup de résultat.
                        $('div#dialog-result').attr('title', title);
                        $('div#dialog-result').html(message);
                        $('div#dialog-result p').css('display', 'block');

                        // Fermeture de la popup de confirmation.
                        $('div#dialog-confirm').dialog('close');

                        // Affichage de la popup de résultat.
                        $('div#dialog-result').dialog({
                            resizable: false,
                            modal: true,
                            buttons: {
                                'Fermer': function() {
                                    $(this).dialog('close');
                                    location.reload();
                                }
                            }
                        });
                    });
                },
                'NON': function() {
                    $(this).dialog('close');
                }
            }
        });
    };
}

